package com.shanjupay.merchant.convert;

import com.shanjupay.merchant.api.dto.MerchantDTO;
import com.shanjupay.merchant.entity.Merchant;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.ArrayList;
import java.util.List;

/**
 * @author whb
 * @create 2021-11-24 15:49
 * @desciption dto和entity之间的转换类（MapStruct工程提供的功能）
 */
@Mapper //对象属性的映射
public interface MerchantConvert {
    //转换类实例
    MerchantConvert INSTANCE= Mappers.getMapper(MerchantConvert.class);

    /**
     * 把dto转换成entity
     * @param merchantDTO
     * @return
     */
    Merchant dto2entity(MerchantDTO merchantDTO);

    /**
     * 把entity转换成dto
     * @param merchant
     * @return
     */
    MerchantDTO entity2dto(Merchant merchant);

    /**
     * List之间也可以转换，把entity的List转换成MerchantDTO的List集合
     * @param merchantList
     * @return
     */
    List<MerchantDTO> entityList2dtoList(List<Merchant> merchantList);

    /**
     * 类内测试main方法
     * @param args
     */
    public static void main(String[] args) {
        //将entity转成dto
        Merchant merchant  =new Merchant();
        merchant.setUsername("测试");
        merchant.setMobile("123456");
        MerchantDTO merchantDTO = MerchantConvert.INSTANCE.entity2dto(merchant);
        System.out.println(merchantDTO);

        //将dto转成entity
        merchantDTO.setMerchantName("蜜雪冰城");
        Merchant merchant1 = MerchantConvert.INSTANCE.dto2entity(merchantDTO);
        System.out.println(merchant1);

        //entity的List集合转成dto的List集合
        List<Merchant> merchantList=new ArrayList<>();
        merchantList.add(merchant1);
        List<MerchantDTO> merchantDTOList = MerchantConvert.INSTANCE.entityList2dtoList(merchantList);
        System.out.println(merchantDTOList);
    }
}
